package com.example.type;

/**
 * 目标：掌握表达式的自动类型转换机制
 */
public class TypeConversionDemo2 {
    public static void main(String[] args) {
        // 注意事项
        // 1.如果多种数据类型参与运算，其结果以大的数据类型为准
        // 2.byte,short,char 三种类型数据在和其他类型数据运算时，都会转换为int类型再运算
        byte a = 10;
        int b = 20;
        long c = 30;
        long rs = a + b + c;
        System.out.println(rs);

        // 因为1.0默认是double类型的，所以需要定义一个double类型的变量去接收
        double rs2 = a + b + 1.0;
        System.out.println(rs2);

        // 因为byte short char 进行运算的时候都会把类型自动提升为int，所以需要定义一个int类型的变量去接收
        byte i = 10;
        short j = 30;
        int rs3 = i + j;
        System.out.println(rs3);

        // 面试笔试题：
        // 为什么会把byte转成int去计算 因为b1现在是110没有超过byte的范围 b2是80没有超过byte的范围
        // 但是两个相加 变成了结果是190，此时就超过了byte的范围了，所以会自动转成int类型，可以保证数据不出错
        byte b1 = 110;
        byte b2 = 80;
        int b3 = b1 + b2;
        System.out.println(b3);
    }
}
